package config

import "net"

type Account struct {
	Id        int64 `xorm:"pk autoincr"`
	RelatedId int64 `xorm:"unique"` //当用于用户自定义账户时，是用户ID，当用于source自定义账户时，是sourceid
	User      string
	Password  string
	Denied    bool //定义的
}

type SourceIPRange struct {
	Id       int64 `xorm:"pk autoincr"`
	SourceId int64
	CIDR     *net.IPNet `xorm:"json"`
	Mark     byte
	Denied   bool //是否为黑名单
}

type SourceGwConfig struct {
	Id                 int64 `xorm:"pk autoincr"`
	SourceId           int64 `xorm:"unique"`
	Cors               []string
	Accounts           []*Account       `xorm:"-"` //另表存储的账户信息
	IPRanges           []*SourceIPRange `xorm:"-"` //另表存储的账户信息
	Emulation          bool             //模拟访问
	Gateway            int              //网关访问
	Source             int              `xorm:"default -1"` //从原地址访问代理(存储服务器变量的序号)
	AuthMode           int              //认证模式
	AuthUser           int              //认证用户的来源
	SmartEncrypt       bool             //开启智能脱敏功能
	AllowGw            bool             //允许网关模拟
	AllowUpdate        bool             //允许网关更新文档
	Path               string           `xorm:"-"`
	HideServers        bool             `xorm:"-"`
	NotAllowUnknownIp  bool             //是否禁止未知IP访问
	TimeRanges         []uint32         //接受1天（每天相同）或7天（每周配置）
	DayRangeForMonth   uint32
	QpsMax             int64
	EmulateWhenQpsOver bool //当Qps超标时，是否启动模拟功能
	AllowEveryOne      bool //当配置为无需认证时，是否允许所有人（包括不知道code的人）访问接口
}
